-1

我想检查数组值是否包含“?” 或不。如果是,则必须提取问号后面的字符。谢谢你。

这是我的代码:

<?php
// Assume the Url to be localhost/demo/index.php?set=1
$path = explode('/',$_SERVER['REQUEST_URI']);
if (strpos($path[2], '?') !== false) {
echo "found";
}
?>

如何使用 preg_match 达到同样的效果?

4

4 回答 4

1

数组还是字符串?在数组中,它不像字符被捆绑在一起。假设您的意思是一个字符串,您可以尝试

<?php

$haystack="testata?basdasd";
$needle="?";

 $pos = strpos($haystack,$needle);
 if($pos!==FALSE && $haystack[$post+1]!="")
  echo $haystack[$pos+1];

?>
于 2013-09-27T05:14:04.223 回答
0
$storedText = [];

Foreach($arrray as $a){
   $postion = strpos($a,"?");

   If($position !== false){
      $succeedingText = substr($a,$position);
      $storedText[] = $succeedingText;
   }

}

比 $storedText 是一个数组,其中所有文本都在 ? 在所有包含 ?

于 2013-09-27T05:18:46.653 回答
0

使用in_array().. 比正则表达式快得多

<?php

$a = array('1','?','3');
$needle = '?';
if(in_array($needle,$a))
{
    echo $needle;

}
于 2013-09-27T05:12:11.950 回答
0

假设您的问题意味着是否有“?” 字符串中的字符,数组中的字符:

没有正则表达式:

<?php
   for($i = 0; $i < count($array); $i++) {
     if (strpos($array[$i], '?') !== false) {
       // you found your item, use the $i index and break the loop
     }
   }
?>

使用正则表达式:

<?php
   for($i = 0; $i < count($array); $i++) {
     if (preg_match('/\?/', $array[$i])) {
       // you found your item, use the $i index and break the loop
     }
   }
?>
于 2013-09-27T05:17:22.183 回答