我试图找出如何title="Title is here"在PHP中替换图像的标题部分(),但我不能让它工作,所以有人可以帮忙吗?
标题可以是字面上的任何东西,所以我需要找到title"{anything here}"并替换它(如下所示).
我正在向我们努力preg_replace(),但如果有更好的方法,我愿意接受建议.
我尝试了几种不同的变化,但我认为这并不是太远了 -
$pattern = '#^title="([a-zA-Z0-9])"$#';
$replacement = 'title="Visit the '.$service['title'].' page';
$service_image = preg_replace($pattern, $replacement, $service_image);
Run Code Online (Sandbox Code Playgroud) 我正在搜索一个函数来剪切以下字符串并获取所有内容BEFORE和AFTER
I need this part<!-- more -->and also this part
Run Code Online (Sandbox Code Playgroud)
结果应该是
$result[0] = "I need this part"
$result[1] = "and also this part"
Run Code Online (Sandbox Code Playgroud)
感谢任何帮助!
我有一个像这样的html表:
<table ... >
<tbody ... >
<tr ... >
<td ...>
string...
</td>
<td ...>
string...
</td>
<td ...>
string...
</td>
<td ...>
string...
</td>
<td ...>
string...
</td>
</tr>
<tr ... >
<td ...>
string...
</td>
<td ...>
string...
</td>
<td ...>
string...
</td>
<td ...>
</td>
<td ...>
string...
</td>
</tr>
..............
</tbody>
</table>
Run Code Online (Sandbox Code Playgroud)
这是一个数据表,我需要从中获取所有数据.该表将有许多行(<tr></tr>).每一行都有一个固定的列(<td></td>)(目前是5).记住每个表,tr,td标签可能格式化(在哪里说"......")
我希望每个人都可以帮我编写preg_match_all函数的正则表达式来获取这样的数据:
array(
0 => array(
0=> 'some data0',
1=> 'some data1',
2=> 'some data2',
3=> 'some …Run Code Online (Sandbox Code Playgroud) 说我有以下链接:
<li class="hook">
<a href="i_have_underscores">I_have_underscores</a>
</li>
Run Code Online (Sandbox Code Playgroud)
我怎么样,只删除文本中的下划线而不是href?我使用了str_replace,但这删除了所有下划线,这并不理想.
所以基本上我会留下这个输出:
<li class="hook">
<a href="i_have_underscores">I have underscores</a>
</li>
Run Code Online (Sandbox Code Playgroud)
任何帮助,非常感谢
我正在学习RegEx和网站抓取,并提出以下问题,如果得到解答,应该大大加快我的学习过程.
我以htmlencoded格式从网站上获取了表单元素.也就是说,我有$ content字符串,所有标签都完好无损,如下所示:
$content = "<form name="sth" action="">
<select name="city">
<option value="one">One town</option>
<option value="two">Another town</option>
<option value="three">Yet Another town</option>
...
</select>
</form>
Run Code Online (Sandbox Code Playgroud)
我想以这种方式获取网站上的所有选项:
array("One Town" => "one", "Another Town" => "two", "Yet Another Town" => "three" ...);
Run Code Online (Sandbox Code Playgroud)
现在,我知道这可以很容易地通过操纵字符串,切片切割它,搜索每个字符串中的子串,等等,直到我拥有我需要的一切.但我确信必须有一种更简单的方法来使用正则表达式,它应该立即从给定的字符串中获取所有结果.任何人都可以帮我找到一个快捷方式吗?我搜索过网络上最好的正则表达式网站,但无济于事.
非常感谢
我有一个字符串:
$str = "hello world, this is mars"
Run Code Online (Sandbox Code Playgroud)
我想要一个改进的strstr,看起来像这样:
istrstr($str, 'world', 'is')
Run Code Online (Sandbox Code Playgroud)
并且返回值将是:
"world, this"
Run Code Online (Sandbox Code Playgroud)
换句话说,有一根针开始,一根针结束.
我只是想知道是否已经有解决方案,或者我应该自己写一个...
更新:
基于答案,我做了这个功能:
function istrstr($haystack, $needle_start, $needle_end, $include = false) {
if (!$include) {
$pos_start = strpos($haystack, $needle_start) + strlen($needle_start);
$pos_end = strpos($haystack, $needle_end, $pos_start);
return substr($haystack, $pos_start, $pos_end - $pos_start);
}
}
Run Code Online (Sandbox Code Playgroud)
现在我只需要排除版本,所以我没有打扰包括一个......
我需要<p>在字符串中找到标签.然后我想存储来自(包括)的字符串
标记到另一个变量.
例如,我有字符串名称firstString;
firstString = "<div id='tab-1'><p>This is first string</p></div>"
我想要第二个字符串
secondString = "<p>This is first string</p>"
我只需要第一个<p>标签.
我正在使用正则表达式.从来没有完全理解它真正的问题是:是否有人有一个很好的网站,解释表达之间的差异,而不只是发布像
$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 从字符串中获取 HTML 属性但失败:
$string = '<ul id="value" name="Bob" custom-tag="customData">';
preg_filter("/(\w[-\w]*)=\"(.*?)\"/", '$1', $string ); // returns "<ul id name custom-tag"
preg_filter("/(\w[-\w]*)=\"(.*?)\"/", '$1', $string ); // returns "<ul value Bob customData"
Run Code Online (Sandbox Code Playgroud)
我想返回的是:
array(
'id' => 'value',
'name' => 'Bob',
'custom-tag' => 'customData'
);
Run Code Online (Sandbox Code Playgroud) 如果文件中的注释覆盖了其中的 6 行,则应删除该注释并替换为与注释行数相等的空行。
这是我的意思的一个小示范。给定的 file.html 有 10 行:
line 1 : <!-- text
line 2 : text
line 3 : text
line 4 : empty line
line 5 : text
line 6 : -->
line 7 :empty line
line 8 :text
line 9 :empty line
line 10 :text
Run Code Online (Sandbox Code Playgroud)
预期的输出将是:
line 1 :empty line
line 2 :empty line
line 3 :empty line
line 4 :empty line
line 5 :empty line
line 6 :empty line
line 7 :empty line
line 8 :text …Run Code Online (Sandbox Code Playgroud) php ×10
regex ×6
html-parsing ×2
preg-replace ×2
html ×1
html-table ×1
image ×1
laravel ×1
mysql ×1
preg-match ×1
str-replace ×1
string ×1
title ×1
web-crawler ×1