0

在我的 php 代码中,我有一个变量数组,以一个单词开头,后跟一个(随机)数字:

x[0] = 'justaword8'
x[1] = 'justaword5'
x[2] = 'justaword4'
etc.

我知道我必须使用 foreach 循环,但是如何提取每个单词末尾的数字?(我假设我可以使用 preg_match() 但不知道如何准确指定该函数?)

4

5 回答 5

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);
}
于 2013-08-29T16:00:53.983 回答
1

尝试使用这个:Working eval.in(这将适用于一位数)

foreach($x as $key => $value)
    echo substr($value,-1);

我已经更新了两位数的情况,如果没有正则表达式,它看起来有点粗糙但是如果由于某种原因你不想使用正则表达式,它就可以正常工作:(工作 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]);它来删除它。

于 2013-08-29T16:01:18.020 回答
0

你可以试试这个。它只有一位数

$str="justaword5";
echo $last_dig=substr($str,strlen($str)-1,strlen($str));
于 2013-08-29T16:04:36.217 回答
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
于 2013-08-29T16:05:35.697 回答
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 个字符的数组。将所有字符替换为“ ”后,您可以直接将字符串转换为数字!

于 2013-08-29T16:05:39.927 回答