在我的PHP代码中,我有一个变量数组,以一个单词后跟一个(随机)数字开头:
x[0] = 'justaword8'
x[1] = 'justaword5'
x[2] = 'justaword4'
etc.
我知道我必须使用foreach循环,但是如何在每个单词的末尾提取数字? (我假设我可以使用preg_match()但不知道如何准确指定该函数?)
答案 0 :(得分:4)
由于数字长度不一,介于一位或两位数之间,您可以使用preg_match()
,如下所示:
foreach( $array as $x) {
preg_match( '/(\d{1,2})$/', $x, $match);
echo "The number is: " . $match[1];
}
但是,由于前缀是提前知道的,只需将其直接删除(根据Marc B的评论,使用示例):
$prefix = "justaword";
$length = strlen( $prefix);
foreach( $array as $x) {
echo "The number is: " . substr( $x, $length);
}
答案 1 :(得分:1)
尝试使用此功能: Working eval.in (这适用于一位数字)
foreach($x as $key => $value)
echo substr($value,-1);
我已经更新了两位数的情况,看起来有点粗糙没有正则表达式然而如果由于某种原因你不想使用正则表达式就可以正常工作:( Working eval.in )
<?php
$x[0] = 'justaword8';
$x[1] = 'justaword52';
$x[2] = 'justaword4';
foreach($x as $key => $value){
$y = substr($value,'-2:');
if(is_numeric($y)) // if last 2 chars are number
echo $y; // return them
else
echo substr($y,1); // return only the last char
}
?>
如果“justaword”不变,您可以使用str_replace('justaword','',$x[0]);
删除它。
答案 2 :(得分:0)
你可以尝试这个。只有一位数
$str="justaword5";
echo $last_dig=substr($str,strlen($str)-1,strlen($str));
答案 3 :(得分:0)
使用str_replace
修剪前缀。
$prefix = "justaword";
$words = array("justaword8", "justaword4", "justaword500");
$numbers = array();
foreach ($words as $word) {
$numbers[] = str_replace($prefix, "", $word);
}
var_dump($numbers); // gives 8, 4, 500
答案 4 :(得分:0)
代码:
$vowels = array("a", "e", "i", "o", "u", "A", "E", "I", "O", "U");
$onlyconsonants = str_replace($vowels, "", "Hello World of PHP");
输出:
`Hll Wrld f PHP`
相反,你应该做的是让数组成为所有26个字符的数组。 在所有字符被''替换之后,您可以直接将字符串转换为数字!