【问题标题】:PHP regex: How to extract url and filter "\" from specific stringPHP regex:如何从特定字符串中提取 url 和过滤“\”
【发布时间】:2015-03-19 08:12:07
【问题描述】:

我是编程新手;现在,我在 PHP 编程方面遇到了一些问题。

我想从下面的string中提取URL:

"success":true,"load":"http:\/\/8.88.88.8\/list\/si3diwoe\/123","Live":true

想要的string

http://8.88.88.8/list/si3diwoe/123

谁能告诉我这在代码中是如何工作的? 非常感谢!

【问题讨论】:

  • 对我来说这看起来像是 JSON 字符串的一部分。不要使用正则表达式来替换正确的解析器。 PHP 自带了一个不错的 JSON 实现,所以如果可以的话,使用json_decode() 然后直接访问你需要的属性。
  • 它缺少 { 和 } 括号成为 JSON,但除此之外,你是对的。
  • 感谢您的回复,我正在学习PHP编程,不懂JSON,如果您能说出PHP代码,我将不胜感激。我可以使用命令 preg_match 和正则表达式 (?

标签: php regex url extract


【解决方案1】:
$string = '"success":true,"load":"http:\/\/8.88.88.8\/list\/si3diwoe\/123","Live":true';

// The JSON way
$array = json_decode('{' . $string . '}'); // Wrap in {} to make object
$url   = $array->load;
echo "Using JSON : $url", PHP_EOL;

// The RegEx way
preg_match('/load":"(.*?)"/', $string, $matches);
$url = stripslashes($matches[1]);
echo "Using RegEx: $url", PHP_EOL;

输出:

Using JSON : http://8.88.88.8/list/si3diwoe/123
Using RegEx: http://8.88.88.8/list/si3diwoe/123

【讨论】:

  • 感谢您的代码,它是 birfe 并且工作正常。对我很有帮助,但我认为可能有一种方法可以使用一个正则表达式来处理正确的网址,我会发现的。
【解决方案2】:

如果是json字符串,可以使用json_decode将其赋值给一个变量,比如$arr,然后是stripslashes($arr['load']);

如果不是,您可以使用explode("," , $string),并将其分配给一个变量,例如$arr。再次运行explode (explode(":", $arr[1])) 并将其分配给另一个变量,比如说$ar,然后在$ar['1']上做stripslashes;

【讨论】:

  • 感谢您的重播,我的主要目的是想知道正则表达式是否可以做这样的事情,我尝试了代码' $str='"success":true,"load":"http:\ /\/8.88.88.8\/list\/si3diwoe\/123","Live":true'; $pattern='((?
猜你喜欢
  • 2014-06-24
  • 1970-01-01
  • 2021-09-20
  • 2014-08-23
  • 1970-01-01
  • 1970-01-01
  • 2019-09-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多