我的代码是一个简单的代码,但我不明白问题可能出在哪里。
我正在做“ for”操作以获取1到2000之间的数字,然后将数字替换为文本,例如“ 1px”,“ 2px”,...
然后我将这个“'1px','2px',...”设置为数组。 因此,我可以验证文本中何处具有“ px”,然后可以将其替换为“%”。 PS:“%”也是一个数组。
要替换文本,我使用str_replace,它具有功能,但是当我将其与我的代码一起使用时不可以。
implementation "com.google.android.gms:play-services-auth:10.+"
implementation "com.google.android.gms:play-services-identity:10.+"
implementation "com.android.support:support-annotations:27.+"
implementation "com.google.firebase:firebase-core:10.+"
implementation "com.google.firebase:firebase-messaging:10.+"
implementation "com.google.android.gms:play-services-base:10.+"
implementation "com.google.android.gms:play-services-ads:10.+"
$ GetText示例-$search = array('150px','151px','152px','153px','154px',...);
$replace = array('100%');
$testes = str_replace($search, $replace, $GetText)
此代码有效
现在我正在尝试的代码,
<p><img src="data:image/png;base64,iVBOC" data-filename="andy-brown_4.png" style="width: 150px;"><br></p>
用文字显示从1到2000的所有数字,例如:“ 274px”,
for($i = 1; $i<=2000; $i++) {
echo "'". $i . 'px' . "'," ;
$test = "'". $i . 'px' . "'," ;
}
通过此过程,它不会将“ px”替换为“%”
答案 0 :(得分:2)
您可以使用一个php函数preg_replace
$GetText = '<p><img src="data:image/png;base64,iVBOC" data-filename="andy-brown_4.png" style="width: 150px;"><br></p>';
$result = preg_replace("/\d{1,4}px/","100%",$GetText);
var_dump($result);
\d{1,4}px
的意思是:
\d
-搜索数字,
{1,4}
-前一个元素(例如数字)必须重复1-4次,
px
-必须跟随此文本,
因此它会查找*px
之类的所有内容,并替换为100%
,其中*
是从0
到9999
的任何数字;
答案 1 :(得分:1)
如果要使数组不在此循环中,则构建一个数组而不是字符串。
偶然地,每次循环执行$test = "'". $i . 'px' . "'," ;
都会覆盖$test
变量,这意味着您最终将在该字符串中使用单个值,即$test = '2000px'
for($i = 1; $i<=2000; $i++) {
echo "'". $i . 'px' . "'," ;
//$test = "'". $i . 'px' . "'," ;
$test[] = "{$i}px";
}
或者如果您愿意
for($i = 1; $i<=2000; $i++) {
$test[] = $i . 'px';
}
答案 2 :(得分:0)
您可以看到here str_replace接受数组“此函数返回一个字符串或一个数组,其中所有出现在主题中的搜索都替换为给定的替换值。” ,但我认为您可以使用preg_replace
$search = []; // define search array
$GetText = '<p><img src="data:image/png;base64,iVBOC" data-filename="andy-brown_4.png" style="width: 150px;"><br></p>';//dummy text
for($i = 1; $i<=2000; $i++) {
$search[] = " ". $i . 'px' ; // this will push new element into the array
}
$testes = str_replace($search, ' 100%', $GetText); // this will change every element from $search array to ' 100%'
var_dump($testes); // returns <p><img src="data:image/png;base64,iVBOC" data-filename="andy-brown_4.png" style="width: 100%;"><br></p>
var_dump(preg_replace('/(\d+)px/i','100%',$GetText));// this will give you the same result
答案 3 :(得分:0)
您想要一个数组,但是在这里处理一个字符串:
$test = "'".$i.'px'."',";
此代码始终重写$test
字符串,因此$test
始终等于'2000px',
。
但是您需要像这样填充一个数组:
$test[] = $i.'px';
请注意,此处不需要引号,因为str_replace会在文本中查找引号(我相信在大多数情况下不会找到引号)。
接下来需要从2000变到1,从大变小,因为str_replace
将替换第一次发现的事件。
如果您有210px
,str_replace将找到10px
并将其替换为100%
,您将得到2100%
。
因此,工作代码可能如下所示:
$GetText = '<p><img src="data:image/png;base64,iVBOC" data-filename="andy-brown_4.png" style="width: 150px;"><br></p>';
$search = array();
for($i = 2000; $i>=1; $i--) {
$search[] = $i . 'px';
}
$replace = '100%';
$result = str_replace($search, $replace, $GetText);
var_dump($result);
希望这就是您想要的。
答案 4 :(得分:0)
您可以轻松使用str_ireplace
$("#theForm").ajaxSubmit({url: '[some action]',
type: 'post',
success: function() { window.close(); }})