Tôi đang cố gắng phát hiện xem một chuỗi có chứa ít nhất một URL được lưu trữ trong một mảng hay không.
Đây là mảng của tôi:
$owned_urls = array['website1.com', 'website2.com', 'website3.com'];
Chuỗi được nhập bởi người dùng và được gửi qua PHP. Trên trang xác nhận tôi muốn kiểm tra xem URL có được nhập trong mảng không.
Tôi đã thử như sau:
$string = 'my domain name is website3.com';
if [in_array[$string, $owned_urls]]
{
echo "Match found";
return true;
}
else
{
echo "Match not found";
return false;
}
Không có vấn đề gì được nhập, sự trở lại luôn luôn là "không tìm thấy".
Đây có phải là cách làm chính xác?
Kirk Beard
9.25512 Huy hiệu vàng44 Huy hiệu bạc47 Huy hiệu đồng12 gold badges44 silver badges47 bronze badges
Đã hỏi ngày 18 tháng 10 năm 2013 lúc 9:11Oct 18, 2013 at 9:11
0
Thử cái này.
$string = 'my domain name is website3.com';
foreach [$owned_urls as $url] {
//if [strstr[$string, $url]] { // mine version
if [strpos[$string, $url] !== FALSE] { // Yoshi version
echo "Match found";
return true;
}
}
echo "Not found!";
return false;
Sử dụng Stristr [] hoặc Stripos [] nếu bạn muốn kiểm tra không nhạy cảm trường hợp.
Đã trả lời ngày 18 tháng 10 năm 2013 lúc 9:16Oct 18, 2013 at 9:16
Daniele Vrutdaniele VrutDaniele Vrut
2.7652 huy hiệu vàng20 Huy hiệu bạc32 Huy hiệu đồng2 gold badges20 silver badges32 bronze badges
3
Điều này dễ dàng hơn rất nhiều nếu tất cả những gì bạn muốn làm là tìm một chuỗi trong một mảng.
$array = ["they has mystring in it", "some", "other", "elements"];
if [stripos[json_encode[$array],'mystring'] !== false] {
echo "found mystring";
}
Đã trả lời ngày 29 tháng 11 năm 2015 lúc 20:51Nov 29, 2015 at 20:51
5
Thử cái này:
$owned_urls= array['website1.com', 'website2.com', 'website3.com'];
$string = 'my domain name is website3.com';
$url_string = end[explode[' ', $string]];
if [in_array[$url_string,$owned_urls]]{
echo "Match found";
return true;
} else {
echo "Match not found";
return false;
}
- Cảm ơn
Đã trả lời ngày 18 tháng 10 năm 2013 lúc 9:28Oct 18, 2013 at 9:28
Anand Solankianand SolankiAnand Solanki
3,4094 Huy hiệu vàng16 Huy hiệu bạc27 Huy hiệu đồng4 gold badges16 silver badges27 bronze badges
4
Tôi nghĩ rằng một cách nhanh hơn là sử dụng preg_match.preg_match.
$user_input = 'Something website2.com or other';
$owned_urls_array = array['website1.com', 'website2.com', 'website3.com'];
if [ preg_match['['.implode['|',$owned_urls_array].']', $user_input]]{
echo "Match found";
}else{
echo "Match not found";
}
Đã trả lời ngày 15 tháng 1 năm 2018 lúc 13:25Jan 15, 2018 at 13:25
VenceDorvenctionorvencedor
6037 Huy hiệu bạc9 Huy hiệu Đồng7 silver badges9 bronze badges
5
$string = 'my domain name is website3.com';
$a = array['website1.com','website2.com','website3.com'];
$result = count[array_filter[$a, create_function['$e','return strstr["'.$string.'", $e];']]]>0;
var_dump[$result ];
đầu ra
bool[true]
Đã trả lời ngày 18 tháng 10 năm 2013 lúc 9:31Oct 18, 2013 at 9:31
RafhrafhRafH
4.4342 Huy hiệu vàng23 Huy hiệu bạc23 Huy hiệu đồng2 gold badges23 silver badges23 bronze badges
2
Dưới đây là một chức năng nhỏ tìm kiếm tất cả các giá trị từ một mảng trong một chuỗi đã cho. Tôi sử dụng điều này trong trang web của mình để kiểm tra IP khách truy cập nằm trong danh sách được phép của tôi trên một số trang nhất định.
function array_in_string[$str, array $arr] {
foreach[$arr as $arr_value] { //start looping the array
if [stripos[$str,$arr_value] !== false] return true; //if $arr_value is found in $str return true
}
return false; //else return false
}
Cách sử dụng
$owned_urls = array['website1.com', 'website2.com', 'website3.com'];
//this example should return FOUND
$string = 'my domain name is website3.com';
if [array_in_string[$string, $owned_urls]] {
echo "first: Match found
";
}
else {
echo "first: Match not found
";
}
//this example should return NOT FOUND
$string = 'my domain name is website4.com';
if [array_in_string[$string, $owned_urls]] {
echo "second: Match found
";
}
else {
echo "second: Match not found
";
}
Bản demo: //phpfiddle.org/lite/code/qf7j-8m09
Chức năng Stripos không nghiêm ngặt lắm. Nó không nhạy cảm với trường hợp hoặc nó có thể khớp với một phần của từ //php.net/manual/ro/function.stripos.php function is not very strict. it's not case sensitive or it can match a part of a word //php.net/manual/ro/function.stripos.php
Nếu bạn muốn tìm kiếm đó là trường hợp nhạy cảm, hãy sử dụng strpos //php.net/manual/ro/function.strpos.phpstrpos //php.net/manual/ro/function.strpos.php
Để phù hợp chính xác, hãy sử dụng regex [preg_match], hãy kiểm tra câu trả lời của anh chàng này //stackoverflow.com/a/25633879/4481831preg_match], check this guy answer //stackoverflow.com/a/25633879/4481831
Đã trả lời ngày 24 tháng 5 năm 2016 lúc 6:42May 24, 2016 at 6:42
crisc2000crisc2000crisc2000
91610 Huy hiệu bạc19 Huy hiệu đồng10 silver badges19 bronze badges
1
Bạn có thể kết hợp các giá trị mảng với sự nổ tung và một khoảng cách của | và sau đó sử dụng preg_match để tìm kiếm giá trị.
Đây là giải pháp tôi đưa ra với ...
$string = 'my domain name is website3.com';
if [in_array[$string, $owned_urls]]
{
echo "Match found";
return true;
}
else
{
echo "Match not found";
return false;
}
0Đã trả lời ngày 14 tháng 2 năm 2020 lúc 7:55Feb 14, 2020 at 7:55
FarrisfahadfarrisfahadFarrisFahad
3361 Huy hiệu vàng4 Huy hiệu bạc16 Huy hiệu đồng1 gold badge4 silver badges16 bronze badges
1
Nếu
$string = 'my domain name is website3.com';
if [in_array[$string, $owned_urls]]
{
echo "Match found";
return true;
}
else
{
echo "Match not found";
return false;
}
8 của bạn luôn nhất quán [nghĩa là tên miền luôn ở cuối chuỗi], bạn có thể sử dụng $string = 'my domain name is website3.com';
if [in_array[$string, $owned_urls]]
{
echo "Match found";
return true;
}
else
{
echo "Match not found";
return false;
}
9 với $string = 'my domain name is website3.com';
foreach [$owned_urls as $url] {
//if [strstr[$string, $url]] { // mine version
if [strpos[$string, $url] !== FALSE] { // Yoshi version
echo "Match found";
return true;
}
}
echo "Not found!";
return false;
0, sau đó sử dụng $string = 'my domain name is website3.com';
foreach [$owned_urls as $url] {
//if [strstr[$string, $url]] { // mine version
if [strpos[$string, $url] !== FALSE] { // Yoshi version
echo "Match found";
return true;
}
}
echo "Not found!";
return false;
1 để kiểm tra một trận đấu [như @anand Solanki đã chỉ ra trong câu trả lời của họ] .always at the end of the string], you can use $string = 'my domain name is website3.com';
if [in_array[$string, $owned_urls]]
{
echo "Match found";
return true;
}
else
{
echo "Match not found";
return false;
}
9 with $string = 'my domain name is website3.com';
foreach [$owned_urls as $url] {
//if [strstr[$string, $url]] { // mine version
if [strpos[$string, $url] !== FALSE] { // Yoshi version
echo "Match found";
return true;
}
}
echo "Not found!";
return false;
0, and then use $string = 'my domain name is website3.com';
foreach [$owned_urls as $url] {
//if [strstr[$string, $url]] { // mine version
if [strpos[$string, $url] !== FALSE] { // Yoshi version
echo "Match found";
return true;
}
}
echo "Not found!";
return false;
1 to check for a match [as pointed out by @Anand Solanki in their answer].Nếu không, bạn nên sử dụng biểu thức chính quy để trích xuất miền từ chuỗi, sau đó sử dụng
$string = 'my domain name is website3.com';
foreach [$owned_urls as $url] {
//if [strstr[$string, $url]] { // mine version
if [strpos[$string, $url] !== FALSE] { // Yoshi version
echo "Match found";
return true;
}
}
echo "Not found!";
return false;
1 để kiểm tra một trận đấu.$string = 'my domain name is website3.com';
if [in_array[$string, $owned_urls]]
{
echo "Match found";
return true;
}
else
{
echo "Match not found";
return false;
}
1Biểu thức trên có thể được cải thiện [tôi không đặc biệt hiểu biết trong lĩnh vực này]
Đây là bản demo
Đã trả lời ngày 18 tháng 10 năm 2013 lúc 9:57Oct 18, 2013 at 9:57
Billyonecanbillyonecanbillyonecan
Phim thương hiệu vàng 19,9k88 gold badges41 silver badges63 bronze badges
1
$string = 'my domain name is website3.com';
if [in_array[$string, $owned_urls]]
{
echo "Match found";
return true;
}
else
{
echo "Match not found";
return false;
}
2Đã trả lời ngày 18 tháng 10 năm 2013 lúc 9:45Oct 18, 2013 at 9:45
SandeshsandeshSandesh
3532 Huy hiệu bạc8 Huy hiệu Đồng2 silver badges8 bronze badges
1
Bạn đang kiểm tra toàn bộ chuỗi vào các giá trị mảng. Vì vậy, đầu ra luôn là
$string = 'my domain name is website3.com';
foreach [$owned_urls as $url] {
//if [strstr[$string, $url]] { // mine version
if [strpos[$string, $url] !== FALSE] { // Yoshi version
echo "Match found";
return true;
}
}
echo "Not found!";
return false;
3.Tôi sử dụng cả
$string = 'my domain name is website3.com';
foreach [$owned_urls as $url] {
//if [strstr[$string, $url]] { // mine version
if [strpos[$string, $url] !== FALSE] { // Yoshi version
echo "Match found";
return true;
}
}
echo "Not found!";
return false;
4 và $string = 'my domain name is website3.com';
foreach [$owned_urls as $url] {
//if [strstr[$string, $url]] { // mine version
if [strpos[$string, $url] !== FALSE] { // Yoshi version
echo "Match found";
return true;
}
}
echo "Not found!";
return false;
5 trong trường hợp này.$string = 'my domain name is website3.com';
if [in_array[$string, $owned_urls]]
{
echo "Match found";
return true;
}
else
{
echo "Match not found";
return false;
}
3Đã trả lời ngày 18 tháng 10 năm 2013 lúc 9:45Oct 18, 2013 at 9:45
Sandeshsandeshrevo
3532 Huy hiệu bạc8 Huy hiệu Đồng14 gold badges74 silver badges114 bronze badges
1
$string = 'my domain name is website3.com';
if [in_array[$string, $owned_urls]]
{
echo "Match found";
return true;
}
else
{
echo "Match not found";
return false;
}
4Bạn đang kiểm tra toàn bộ chuỗi vào các giá trị mảng. Vì vậy, đầu ra luôn là
$string = 'my domain name is website3.com';
foreach [$owned_urls as $url] {
//if [strstr[$string, $url]] { // mine version
if [strpos[$string, $url] !== FALSE] { // Yoshi version
echo "Match found";
return true;
}
}
echo "Not found!";
return false;
3.Oct 23, 2017 at 14:38
1
Tôi sử dụng cả
$string = 'my domain name is website3.com';
foreach [$owned_urls as $url] {
//if [strstr[$string, $url]] { // mine version
if [strpos[$string, $url] !== FALSE] { // Yoshi version
echo "Match found";
return true;
}
}
echo "Not found!";
return false;
4 và $string = 'my domain name is website3.com';
foreach [$owned_urls as $url] {
//if [strstr[$string, $url]] { // mine version
if [strpos[$string, $url] !== FALSE] { // Yoshi version
echo "Match found";
return true;
}
}
echo "Not found!";
return false;
5 trong trường hợp này.$string = 'my domain name is website3.com';
if [in_array[$string, $owned_urls]]
{
echo "Match found";
return true;
}
else
{
echo "Match not found";
return false;
}
5Revorevo
46.8K14 Huy hiệu vàng74 Huy hiệu bạc114 Huy hiệu đồng
Đã trả lời ngày 23 tháng 10 năm 2017 lúc 14:38
Tôi thấy điều này nhanh chóng và đơn giản mà không cần chạy vòng.
Giải thích nhỏ!Jan 16, 2018 at 12:04
user3767643user3767643user3767643
Tạo biến mới bằng
6 thay thế giá trị trong mảng của chuỗi gốc.1 gold badge9 silver badges24 bronze badges$string = 'my domain name is website3.com';
foreach [$owned_urls as $url] {
//if [strstr[$string, $url]] { // mine version
if [strpos[$string, $url] !== FALSE] { // Yoshi version
echo "Match found";
return true;
}
}
echo "Not found!";
return false;
1
$string = 'my domain name is website3.com';
if [in_array[$string, $owned_urls]]
{
echo "Match found";
return true;
}
else
{
echo "Match not found";
return false;
}
6Làm so sánh chuỗi - Nếu giá trị là 0, điều đó có nghĩa là, các chuỗi bằng nhau và không có gì được thay thế, do đó không có giá trị nào trong mảng tồn tại trong chuỗi.
Nếu đó là ngược lại 2, tức là trong khi thực hiện so sánh chuỗi, cả chuỗi gốc và chuỗi mới đều không khớp, điều đó có nghĩa là, một cái gì đó đã được thay thế, do đó giá trị trong mảng tồn tại trong chuỗi.
ex:
Đã trả lời ngày 16 tháng 1 năm 2018 lúc 12:04
6141 Huy hiệu vàng9 Huy hiệu bạc24 Huy hiệu đồngFeb 6, 2020 at 9:23
1
Đây là cách tiếp cận tốt nhất tìm kiếm
$string = 'my domain name is website3.com';
if [in_array[$string, $owned_urls]]
{
echo "Match found";
return true;
}
else
{
echo "Match not found";
return false;
}
7giống như như tôi mysql
Chọn * Từ Bảng WHERE Tên = "%Web%"Mar 15, 2020 at 15:07
1