相关疑难解决方法(0)

PHP中的preg/regex

我正在使用正则表达式.从来没有完全理解它真正的问题是:是否有人有一个很好的网站,解释表达之间的差异,而不只是发布像

$regexp = "/^[^0-9][A-z0-9_]+([.][A-z0-9_]+)*[@][A-z0-9_]+([.][A-z0-9_]+)*[.][A-z]{2,4}$/";
Run Code Online (Sandbox Code Playgroud)

然后讨论整个线路的作用.而不是每个表达式将做什么.我已经尝试使用Google搜索许多不同版本的preg_replace和regex教程,但他们似乎都认为我们已经知道像\ b [^>]*会做什么.

二级.我试图这样做的原因:我想转

<span style="color: #000000">*ANY NUMBER*</span>
Run Code Online (Sandbox Code Playgroud)

<span style="color: #0000ff">*ANY NUMBER*</span>
Run Code Online (Sandbox Code Playgroud)

一些变种,我已经尝试过一些只是没有工作一些使脚本废话.

$data = preg_replace("/<span style=\"color: #000000\">([0-9])</span>/", "<span style=\"color: #FFCC00\">$1</span>", $data);//just tried to match atleast 0-9

$data = preg_replace("/<span style=\"color: #000000\"\b[^>]*>(.*?)</span>/", "<span style=\"color: #FFCC00\">$1</span>", $data);

$data = preg_replace("/<span style=\"color: #000000\"\b[^>]*>([0-9])</span>/", "<span style=\"color: #FFCC00\">$1</span>", $data);
Run Code Online (Sandbox Code Playgroud)

这个具体问题的答案对我来说并不像一个网站那么重要,所以检查就是这样.尝试了很多不同的网站,我很确定它不高于我的理解我只是找不到一个好的所有坏教程/示例农场.W3和phpdotnet的正常回退不具备我这次需要的东西.

EDIT1对于那些最终在这里寻找类似答案的人:

$data = preg_replace("/<span style=\"color: #000000\">([0-9]{1,})<\/span>/", "<span style=\"color: #FFCC00\">$1</span>", $data);
Run Code Online (Sandbox Code Playgroud)

做了它需要的东西.可悲的是,这是我尝试的第一件事之一,但因为我没有放</ span>而不是它不起作用,我不知道"[0-9] {1,}"是否是最合适的匹配方式number(告诉它匹配任何整数0-9与[0-9]至少一次,尽可能多次与{1,},它仍然适合目的)

ROY Finley发布时间:http: //www.macronimous.com/resources/writing_regular_expression_with_php.asp 它是一个很好的网站,有一个表达式定义列表和一个很好的示例后续工作.

另外:regular-expressions.info/tutorial.html发布了几次.它是一个更慢,更深入的步行,但如果你被卡住,我就是它的好.

在我有机会玩它们之后,会弹出regex101和解析器.

EDIT2 DWright在"掌握正则表达式"下面发布了一个书籍链接.如果你看一下正则表达式并且无法对字符的卷积做出正面或反面,那么它绝对值得一试.花了大约一个半小时来阅读大约一半,但这与谷歌花费的时间相比没有时间,并且用来避免它的乱七八糟的工作.

下面链接的html解析也适用于这个特定问题.

php regex preg-replace html-parsing

1
推荐指数
1
解决办法
485
查看次数

为什么这个preg_match_all会突然停止工作?

这段代码工作了几天,直到它在最糟糕的时间停止工作.它只是从NOAA网站提取天气警报信息并将其显示在我的页面上.有人可以告诉我为什么会突然失败?

$file = file_get_contents("http://forecast.weather.gov/showsigwx.php?warnzone=ARZ018&warncounty=ARC055");  
preg_match_all('#<div id="content">([^`]*?)<\/div>#', $file, $matches); 
$content = $matches[1];  

echo "content = ".$content."</br>" ;
echo "matches = ".$matches."</br>" ;
print_r ($matches); echo "</br>";
echo "file </br>".$file."</br></br>" ;
Run Code Online (Sandbox Code Playgroud)

现在我得到的只是一个空数组.

这是输出..

content = Array
matches = Array
Array ( [0] => Array ( ) [1] => Array ( ) )
file = the full page as requested by file_get_contents
Run Code Online (Sandbox Code Playgroud)

php file-get-contents

1
推荐指数
1
解决办法
179
查看次数

将XML数据提取到php

我正在尝试从XML文件中提取数据(http://freegeoip.net/xml/google.com).您可以看到该文件的内容如下所示:

<Response>
<Ip>74.125.235.3</Ip>
<CountryCode>US</CountryCode>
<CountryName>United States</CountryName>
<RegionCode>CA</RegionCode>
<RegionName>California</RegionName>
<City>Mountain View</City>
<ZipCode>94043</ZipCode>
<Latitude>37.4192</Latitude>
<Longitude>-122.0574</Longitude>
<MetroCode>807</MetroCode>
<AreaCode>650</AreaCode>
</Response>
Run Code Online (Sandbox Code Playgroud)

我想获取存储在<latitude><longitude>标签中的信息,并将它们存储在单独的变量中.问题是,我不知道如何做到这一点,并想知道是否有人可以告诉我如何用PHP解析XML文件?

php xml latitude-longitude geoip

1
推荐指数
1
解决办法
3万
查看次数

用于查找和删除事件属性的正则表达式。onclick、onload、onhover 等

我已经断断续续地这样做了几天,但我对 RexEx 的掌握程度并不好。是的,我知道 RegEx 不是用于解析 HTML 的。我正在对 CKEditor 输入进行服务器端“清理”,它已经做到了这一点,但仅限于客户端。

剥离所有白名单标签后...

第一:删除所有用引号$html = preg_replace(' on\w+=(["\'])[^\1]*?\1', '', $html); 正确引用的事件属性'"

第二:$html = preg_replace(' on\w+=\S+', '', $html);*删除那些没有引号但仍然可以触发的,例如。onclick=blowUpTheBase()

我想做的是确保 onEvent 位于<&之间>,但只有当 onEvent 属性是标签后的第一个属性时,我才能让它工作。我尝试的一切最终都会捕获大部分代码。我就是懒得够。

前任。$html = preg_replace('<([\s\S]?)( on\w+=\S+) ([\s\S]*?)>', '<$1 $3>', $html);

编辑:我将选择 @colburton 的答案,因为 RegEx 是我所要求的。我也会将它用于我的特殊情况,因为它会带来技巧。(无论如何,这是一个内部应用程序)

我要感谢@Casimir et Hippolyte 的回答因为它提供了一个很好的例子并解释了如何以“正确的方式”做到这一点。我将很快使用 DOMDocument 编写一个函数,它将成为我处理 RTE/WYSIWYG/HTML 输入的首选方式。

php regex

1
推荐指数
1
解决办法
1481
查看次数

这些正则表达式的含义是什么意思?

  1. preg_match( '/<title>(.*)<\/title>/',.....)

  2. preg_match("/src=[\"']?([^\"']?.*(png|jpg|gif))[\"']?/i",....)

php regex

0
推荐指数
1
解决办法
208
查看次数

如何使用PHP来定期文本部分和url部分?

我不想使用simple_html_dom,如何使用php定期获取url部分1.html 2.html 3.html和文本部分111 222 333?谢谢.

<p>items</p>
<div>
<ul>
<li><a href="1.html">111</a></li>
<li><a href="2.html">222</a></li>
<li><a href="3.html">333</a></li>
</ul>
</div>
Run Code Online (Sandbox Code Playgroud)

php regex

0
推荐指数
1
解决办法
115
查看次数

使用curl和get_meta_tags()获取元标记信息

有没有办法使用curl这样你可以做一些与php中的get_meta_tags()函数相同的东西?特别是在php中使用curl以尽可能少的开销来获取外部站点的元标记

html php curl meta-tags

0
推荐指数
1
解决办法
8814
查看次数

如何从网站html获取句子

您好我想从html文档中提取所有句子.我该怎么做?因为有很多条件,比如首先我们需要剥离标签,然后我们需要识别可能结束的句子.要么 ?要么 !也可能有电子邮件地址和网站地址等条件.在他们中我们如何制作这样的剧本?

php

0
推荐指数
1
解决办法
592
查看次数

preg_replace 属性值

所以我有一个有效的 preg_match 模式来查找字符串中 HTML 属性的值,我需要用 preg_replace 做同样的事情——不是找到并返回值,而是用一个新的值替换它。

但是如果我只使用 preg_match 模式它不起作用......我被卡住了。

这是代码:

    $string = '<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" 
width="437" height="288" id="viddler">
<param name="movie" value="http://www.viddler.com/player/1234567890/" />
<param name="allowScriptAccess" value="always" />
<param name="allowFullScreen" value="true" />
<param name="flashvars" value="fake=1"/>
<embed src="http://www.viddler.com/player/1234567890/" 
width="437" height="288" type="application/x-shockwave-flash" 
allowScriptAccess="always" allowFullScreen="true" flashvars="fake=1" 
name="viddler" ></embed></object>';

preg_match("|<*[^>]*width=\"([^>]+)\"[^>]*>|Ui", $string, $results);

echo 'Width: '.$results[1];
Run Code Online (Sandbox Code Playgroud)

这有效并将返回437。但是,如果我在 preg_replace() 函数中使用相同的模式,它将删除整个<object>标签。我需要用其他任何东西替换那个 437,比如 200。当我们在做的时候,我还需要替换高度值。最后,这应该适用于任何嵌入代码或 iframe,因此它应该分别查找width="height="......就像上面的 preg_match 示例一样。

任何帮助深表感谢。

编辑:蒂姆的解决方案如下

我让蒂姆的模式进行了一个小的修改:

$interm = preg_replace('|(<*[^>]*width=)"[^>]+"([^>]*>)|Ui', '\1"200"\2', $string);
$result = preg_replace('|(<*[^>]*height=)"[^>]+"([^>]*>)|Ui', '\1"300"\2', $interm);
Run Code Online (Sandbox Code Playgroud)

如果没有这个更改,第一个函数会替换宽度,但它会删除标签中之后的所有属性。 …

php regex preg-replace

0
推荐指数
1
解决办法
4389
查看次数

使用PHP解析亚马逊产品页面

我如何用PHP解析这个亚马逊产品页面并检索产品描述?

<div class="bucket">
    <h2>Descrizione del prodotto</h2>
    <div class="content">Taglia la corda per dare i bonbon al mostriciattolo ...</div>
</div>
Run Code Online (Sandbox Code Playgroud)

我需要使用类"content"将文本转换为div,但是此页面中有多个div,其中包含"bucket"和"content"类.

php

0
推荐指数
1
解决办法
3598
查看次数