Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
preg_替换不使用问号php的twitter url_Php_Preg Replace - Fatal编程技术网

preg_替换不使用问号php的twitter url

preg_替换不使用问号php的twitter url,php,preg-replace,Php,Preg Replace,我创建了下一个函数,将url替换为id为的div function twitterIzer($string){ $pattern = '~https?://twitter\.com/.*?/status/(\d+)~'; $string = preg_replace($pattern, "<div class='tweet' id='tweet$1' tweetid='$1'></div>", $string); return $string;

我创建了下一个函数,将url替换为id为的
div

 function twitterIzer($string){
  $pattern = '~https?://twitter\.com/.*?/status/(\d+)~';

   $string = preg_replace($pattern, "<div class='tweet' id='tweet$1' tweetid='$1'></div>", $string);    

return $string;
  }
但是当我使用这个url时,它检索到了一个额外的
?s=20

https://twitter.com/Minsa_Peru/status/1262730246668922885?s=20

如何删除此
?s=20
文本以使其发挥作用?我只知道我需要改进我的正则表达式模式。谢谢。

如果您只需要正则表达式:

$pattern = '/https?:\/\/twitter\.com\/.*?\/status\/(\d+)(.*)?/';
因为??不是一个数字,因此它将与
(.*)
分隔,这意味着所有东西都是静止的,在本例中是
?s=xyz
,最后一个问号是
,表示它可以存在或不存在


如果只需要正则表达式:

$pattern = '/https?:\/\/twitter\.com\/.*?\/status\/(\d+)(.*)?/';
因为??不是一个数字,因此它将与
(.*)
分隔,这意味着所有东西都是静止的,在本例中是
?s=xyz
,最后一个问号是
,表示它可以存在或不存在


这是否回答了您的问题@休伊特ịnh,实际上不需要,因为问号后面的结尾是可变的,并且在preg_匹配中,@Sammitch I需要改进正则表达式,只需删除?后面的所有内容,包括它本身。将URL解析为其组件将简化这一操作。这回答了您的问题吗@休伊特ịnh,实际上不需要,因为问号后面的结尾是可变的,并且在preg_匹配中,@Sammitch I需要改进正则表达式,只需删除?后面的所有内容,包括它本身。将URL解析为其组成部分将简化这一操作。